
package Entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author 824202
 */
@Entity
@Table(name = "usuarios")
@NamedQueries({
    @NamedQuery(name = "Usuarios.findAll", query = "SELECT u FROM Usuarios u"),
    @NamedQuery(name = "Usuarios.findByUsuarioLogin", query = "SELECT t FROM Usuarios t WHERE t.identificacion = :identificacion and t.contrasena=:contrasena"),
    @NamedQuery(name = "Usuarios.findByUsuarioRecuperar", query = "SELECT t FROM Usuarios t WHERE t.identificacion = :identificacion and t.pregunta=:pregunta and t.respuesta=:respuesta")
})

public class Usuarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "identificacion")
    private String identificacion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "nombre")
    private String nombre;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "apellidouno")
    private String apellidouno;
    @Size(max = 25)
    @Column(name = "apellidodos")
    private String apellidodos;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fechanacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechanacimiento;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "correo")
    private String correo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "respuesta")
    private String respuesta;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "contrasena")
    private String contrasena;
    @OneToMany(mappedBy = "numerodoc")
    private List<Eventos> eventosList;
    @OneToMany(mappedBy = "numerodoc")
    private List<Egresos> egresosList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private List<Perfilusuario> perfilusuarioList;
    @OneToMany(mappedBy = "numerodoc")
    private List<Contenido> contenidoList;
    @OneToMany(mappedBy = "numerodoc")
    private List<Ingresos> ingresosList;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "usuarios")
    private Instructores instructores;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "usuarios")
    private Clientes clientes;
    @JoinColumn(name = "tipodocumento", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Tiposdocumento tipodocumento;
    @JoinColumn(name = "pregunta", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Preguntas pregunta;
    @JoinColumn(name = "perfil", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Perfiles perfil;
    @JoinColumn(name = "genero", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Generos genero;
    @JoinColumn(name = "estado", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Estados estado;

    public Usuarios() {
    }

    public Usuarios(String identificacion) {
        this.identificacion = identificacion;
    }

    public Usuarios(String identificacion, String nombre, String apellidouno, Date fechanacimiento, String correo, String respuesta, String contrasena) {
        this.identificacion = identificacion;
        this.nombre = nombre;
        this.apellidouno = apellidouno;
        this.fechanacimiento = fechanacimiento;
        this.correo = correo;
        this.respuesta = respuesta;
        this.contrasena = contrasena;
    }

    public String getIdentificacion() {
        return identificacion;
    }

    public void setIdentificacion(String identificacion) {
        this.identificacion = identificacion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidouno() {
        return apellidouno;
    }

    public void setApellidouno(String apellidouno) {
        this.apellidouno = apellidouno;
    }

    public String getApellidodos() {
        return apellidodos;
    }

    public void setApellidodos(String apellidodos) {
        this.apellidodos = apellidodos;
    }

    public Date getFechanacimiento() {
        return fechanacimiento;
    }

    public void setFechanacimiento(Date fechanacimiento) {
        this.fechanacimiento = fechanacimiento;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public String getRespuesta() {
        return respuesta;
    }

    public void setRespuesta(String respuesta) {
        this.respuesta = respuesta;
    }

    public String getContrasena() {
        return contrasena;
    }

    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }

    public List<Eventos> getEventosList() {
        return eventosList;
    }

    public void setEventosList(List<Eventos> eventosList) {
        this.eventosList = eventosList;
    }

    public List<Egresos> getEgresosList() {
        return egresosList;
    }

    public void setEgresosList(List<Egresos> egresosList) {
        this.egresosList = egresosList;
    }

    public List<Perfilusuario> getPerfilusuarioList() {
        return perfilusuarioList;
    }

    public void setPerfilusuarioList(List<Perfilusuario> perfilusuarioList) {
        this.perfilusuarioList = perfilusuarioList;
    }

    public List<Contenido> getContenidoList() {
        return contenidoList;
    }

    public void setContenidoList(List<Contenido> contenidoList) {
        this.contenidoList = contenidoList;
    }

    public List<Ingresos> getIngresosList() {
        return ingresosList;
    }

    public void setIngresosList(List<Ingresos> ingresosList) {
        this.ingresosList = ingresosList;
    }

    public Instructores getInstructores() {
        return instructores;
    }

    public void setInstructores(Instructores instructores) {
        this.instructores = instructores;
    }

    public Clientes getClientes() {
        return clientes;
    }

    public void setClientes(Clientes clientes) {
        this.clientes = clientes;
    }

    
    public Tiposdocumento getTipodocumento() {
        return tipodocumento;
    }

    public void setTipodocumento(Tiposdocumento tipodocumento) {
        this.tipodocumento = tipodocumento;
    }

    public Preguntas getPregunta() {
        return pregunta;
    }

    public void setPregunta(Preguntas pregunta) {
        this.pregunta = pregunta;
    }

    public Perfiles getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfiles perfil) {
        this.perfil = perfil;
    }

    public Generos getGenero() {
        return genero;
    }

    public void setGenero(Generos genero) {
        this.genero = genero;
    }

    public Estados getEstado() {
        return estado;
    }

    public void setEstado(Estados estado) {
        this.estado = estado;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (identificacion != null ? identificacion.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuarios)) {
            return false;
        }
        Usuarios other = (Usuarios) object;
        if ((this.identificacion == null && other.identificacion != null) || (this.identificacion != null && !this.identificacion.equals(other.identificacion))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "" +identificacion ;
    }
    
}
